package com.sky.config;

import com.sky.properties.AliOssProperties;
import com.sky.utils.AliOssUtil;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Configurable;
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

/**
 * 配置类，用于创建AliOssUtil对象（负责根据配置属性创建工具类的bean。）
 * @author Elora
 * @date 2025/6/11
 **/
// 标记这个类是一个配置类，里面会定义一些bean。
@Configuration
@Slf4j
public class OssConfiguration {

    // @Bea告诉Spring这个方法会返回一个需要被注册为bean的对象。
    @Bean
    // @ConditionalOnMissingBean：表示如果容器中已经存在同类型的bean，则这个bean不会创建（避免重复）。
    @ConditionalOnMissingBean
    public AliOssUtil aliOssUtil(AliOssProperties aliOssProperties){
        log.info("开始创建阿里云文件上传工具类对象: {}", aliOssProperties);
        return new AliOssUtil(
                aliOssProperties.getEndpoint(),
                aliOssProperties.getAccessKeyId(),
                aliOssProperties.getAccessKeySecret(),
                aliOssProperties.getBucketName());
    }
}
